// 导入 Vue 构造函数
import Vue from 'vue'
// 导入Vuex构造函数
import Vuex from 'vuex'

// 导入全局getters
import getters from './getters'

// 导入三个子模块
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'
import route from './modules/route'

// 导入让vuex数据持久化的插件
import createPersisitedState from 'vuex-persistedstate'

Vue.use(Vuex)

const store = new Vuex.Store({
  // 注册三个子模块（采用对象的简写语法）
  modules: {
    app,
    settings,
    user,
    route
  },
  getters,
  plugins: [
    createPersisitedState({
      key: 'hrsass-23',
      // 哪些模块的数据需要持久化
      // 自动把vuex中的数据同步到localStorage一份
      // 当我们刷新页面的时候，自动的把 localStorage的数据赋值给vuex中的数据
      // 每当vuex中的数据发生变了，也会自动的把最新的vuex数据同步到localStorage

      // 代码中，我们都是从vuex中做数据做增删改查（只用vuex中的数据）
      // localStorage只负责刷新数据不丢失的任务
      paths: ['app', 'settings']
    })
  ]

})

export default store
